home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / awt / Container.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  29.7 KB  |  1,867 lines

  1. package java.awt;
  2.  
  3. import java.awt.GraphicsCallback.PaintAllCallback;
  4. import java.awt.GraphicsCallback.PaintCallback;
  5. import java.awt.GraphicsCallback.PaintHeavyweightComponentsCallback;
  6. import java.awt.GraphicsCallback.PrintAllCallback;
  7. import java.awt.GraphicsCallback.PrintCallback;
  8. import java.awt.GraphicsCallback.PrintHeavyweightComponentsCallback;
  9. import java.awt.event.ContainerEvent;
  10. import java.awt.event.ContainerListener;
  11. import java.awt.event.KeyEvent;
  12. import java.awt.peer.ComponentPeer;
  13. import java.awt.peer.ContainerPeer;
  14. import java.awt.peer.LightweightPeer;
  15. import java.beans.PropertyChangeListener;
  16. import java.io.IOException;
  17. import java.io.ObjectInputStream;
  18. import java.io.ObjectOutputStream;
  19. import java.io.ObjectStreamField;
  20. import java.io.OptionalDataException;
  21. import java.io.PrintStream;
  22. import java.io.PrintWriter;
  23. import java.io.Serializable;
  24. import java.security.AccessController;
  25. import java.util.Arrays;
  26. import java.util.EventListener;
  27. import java.util.HashSet;
  28. import java.util.Set;
  29. import javax.accessibility.Accessible;
  30. import javax.accessibility.AccessibleComponent;
  31. import javax.accessibility.AccessibleContext;
  32. import javax.swing.JInternalFrame;
  33. import sun.awt.AppContext;
  34. import sun.awt.DebugHelper;
  35. import sun.awt.PeerEvent;
  36. import sun.awt.SunToolkit;
  37. import sun.awt.CausedFocusEvent.Cause;
  38.  
  39. public class Container extends Component {
  40.    int ncomponents;
  41.    Component[] component = new Component[0];
  42.    LayoutManager layoutMgr;
  43.    private LightweightDispatcher dispatcher;
  44.    private transient FocusTraversalPolicy focusTraversalPolicy;
  45.    private boolean focusCycleRoot = false;
  46.    private boolean focusTraversalPolicyProvider;
  47.    private transient Set printingThreads;
  48.    private transient boolean printing = false;
  49.    transient ContainerListener containerListener;
  50.    transient int listeningChildren;
  51.    transient int listeningBoundsChildren;
  52.    transient int descendantsCount;
  53.    private static final long serialVersionUID = 4613797578919906343L;
  54.    private static final DebugHelper dbg = DebugHelper.create(Container.class);
  55.    static final boolean INCLUDE_SELF = true;
  56.    static final boolean SEARCH_HEAVYWEIGHTS = true;
  57.    private static final ObjectStreamField[] serialPersistentFields;
  58.    transient Component modalComp;
  59.    transient AppContext modalAppContext;
  60.    private int containerSerializedDataVersion = 1;
  61.  
  62.    private static native void initIDs();
  63.  
  64.    void initializeFocusTraversalKeys() {
  65.       this.focusTraversalKeys = new Set[4];
  66.    }
  67.  
  68.    public int getComponentCount() {
  69.       return this.countComponents();
  70.    }
  71.  
  72.    /** @deprecated */
  73.    @Deprecated
  74.    public int countComponents() {
  75.       return this.ncomponents;
  76.    }
  77.  
  78.    public Component getComponent(int var1) {
  79.       synchronized(this.getTreeLock()) {
  80.          if (var1 >= 0 && var1 < this.ncomponents) {
  81.             return this.component[var1];
  82.          } else {
  83.             throw new ArrayIndexOutOfBoundsException("No such child: " + var1);
  84.          }
  85.       }
  86.    }
  87.  
  88.    public Component[] getComponents() {
  89.       return this.getComponents_NoClientCode();
  90.    }
  91.  
  92.    final Component[] getComponents_NoClientCode() {
  93.       synchronized(this.getTreeLock()) {
  94.          return (Component[])Arrays.copyOf(this.component, this.ncomponents);
  95.       }
  96.    }
  97.  
  98.    public Insets getInsets() {
  99.       return this.insets();
  100.    }
  101.  
  102.    /** @deprecated */
  103.    @Deprecated
  104.    public Insets insets() {
  105.       ComponentPeer var1 = this.peer;
  106.       if (var1 instanceof ContainerPeer) {
  107.          ContainerPeer var2 = (ContainerPeer)var1;
  108.          return (Insets)var2.insets().clone();
  109.       } else {
  110.          return new Insets(0, 0, 0, 0);
  111.       }
  112.    }
  113.  
  114.    public Component add(Component var1) {
  115.       this.addImpl(var1, (Object)null, -1);
  116.       return var1;
  117.    }
  118.  
  119.    public Component add(String var1, Component var2) {
  120.       this.addImpl(var2, var1, -1);
  121.       return var2;
  122.    }
  123.  
  124.    public Component add(Component var1, int var2) {
  125.       this.addImpl(var1, (Object)null, var2);
  126.       return var1;
  127.    }
  128.  
  129.    void checkTreeLock() {
  130.       if (!Thread.holdsLock(this.getTreeLock())) {
  131.          throw new IllegalStateException("This function should be called while holding treeLock");
  132.       }
  133.    }
  134.  
  135.    private void checkAdding(Component var1, int var2) {
  136.       this.checkTreeLock();
  137.       GraphicsConfiguration var3 = this.getGraphicsConfiguration();
  138.       if (var2 <= this.ncomponents && var2 >= 0) {
  139.          if (var1.parent == this && var2 == this.ncomponents) {
  140.             throw new IllegalArgumentException("illegal component position " + var2 + " should be less then " + this.ncomponents);
  141.          } else {
  142.             if (var1 instanceof Container) {
  143.                for(Container var4 = this; var4 != null; var4 = var4.parent) {
  144.                   if (var4 == var1) {
  145.                      throw new IllegalArgumentException("adding container's parent to itself");
  146.                   }
  147.                }
  148.  
  149.                if (var1 instanceof Window) {
  150.                   throw new IllegalArgumentException("adding a window to a container");
  151.                }
  152.             }
  153.  
  154.             Window var6 = this.getContainingWindow();
  155.             Window var5 = var1.getContainingWindow();
  156.             if (var6 != var5) {
  157.                throw new IllegalArgumentException("component and container should be in the same top-level window");
  158.             } else {
  159.                if (var3 != null) {
  160.                   var1.checkGD(var3.getDevice().getIDstring());
  161.                }
  162.  
  163.             }
  164.          }
  165.       } else {
  166.          throw new IllegalArgumentException("illegal component position");
  167.       }
  168.    }
  169.  
  170.    private void removeDelicately(Component var1, Container var2, int var3) {
  171.       this.checkTreeLock();
  172.       int var4 = this.getComponentZOrder(var1);
  173.       if (isRemoveNotifyNeeded(var1, this, var2)) {
  174.          var1.removeNotify();
  175.       }
  176.  
  177.       if (var2 != this) {
  178.          if (this.layoutMgr != null) {
  179.             this.layoutMgr.removeLayoutComponent(var1);
  180.          }
  181.  
  182.          this.adjustListeningChildren(32768L, -var1.numListening(32768L));
  183.          this.adjustListeningChildren(65536L, -var1.numListening(65536L));
  184.          this.adjustDescendants(-var1.countHierarchyMembers());
  185.          var1.parent = null;
  186.          System.arraycopy(this.component, var4 + 1, this.component, var4, this.ncomponents - var4 - 1);
  187.          this.component[--this.ncomponents] = null;
  188.          if (this.valid) {
  189.             this.invalidate();
  190.          }
  191.       } else {
  192.          if (var3 > var4) {
  193.             if (var3 - var4 > 0) {
  194.                System.arraycopy(this.component, var4 + 1, this.component, var4, var3 - var4);
  195.             }
  196.          } else if (var4 - var3 > 0) {
  197.             System.arraycopy(this.component, var3, this.component, var3 + 1, var4 - var3);
  198.          }
  199.  
  200.          this.component[var3] = var1;
  201.       }
  202.  
  203.       if (var1.parent == null) {
  204.          if (this.containerListener != null || (this.eventMask & 2L) != 0L || Toolkit.enabledOnToolkit(2L)) {
  205.             ContainerEvent var5 = new ContainerEvent(this, 301, var1);
  206.             this.dispatchEvent(var5);
  207.          }
  208.  
  209.          var1.createHierarchyEvents(1400, var1, this, 1L, Toolkit.enabledOnToolkit(32768L));
  210.          if (this.peer != null && this.layoutMgr == null && this.isVisible()) {
  211.             this.updateCursorImmediately();
  212.          }
  213.       }
  214.  
  215.    }
  216.  
  217.    boolean canContainFocusOwner(Component var1) {
  218.       if (this.isEnabled() && this.isDisplayable() && this.isVisible() && this.isFocusable()) {
  219.          if (this.isFocusCycleRoot()) {
  220.             FocusTraversalPolicy var2 = this.getFocusTraversalPolicy();
  221.             if (var2 instanceof DefaultFocusTraversalPolicy && !((DefaultFocusTraversalPolicy)var2).accept(var1)) {
  222.                return false;
  223.             }
  224.          }
  225.  
  226.          synchronized(this.getTreeLock()) {
  227.             return this.parent != null ? this.parent.canContainFocusOwner(var1) : true;
  228.          }
  229.       } else {
  230.          return false;
  231.       }
  232.    }
  233.  
  234.    private boolean hasHeavyweightChildren() {
  235.       this.checkTreeLock();
  236.       boolean var1 = true;
  237.  
  238.       for(int var2 = 0; var2 < this.getComponentCount() && var1; ++var2) {
  239.          Component var3 = this.getComponent(var2);
  240.          var1 &= var3.isLightweight();
  241.          if (var1 && var3 instanceof Container) {
  242.             var1 &= !((Container)var3).hasHeavyweightChildren();
  243.          }
  244.       }
  245.  
  246.       return !var1;
  247.    }
  248.  
  249.    Container getHeavyweightContainer() {
  250.       this.checkTreeLock();
  251.       return this.peer != null && !(this.peer instanceof LightweightPeer) ? this : this.getNativeContainer();
  252.    }
  253.  
  254.    private static boolean isRemoveNotifyNeeded(Component var0, Container var1, Container var2) {
  255.       if (var1 == null) {
  256.          return false;
  257.       } else if (var0.peer == null) {
  258.          return false;
  259.       } else if (var2.peer == null) {
  260.          return true;
  261.       } else if (var0.isLightweight()) {
  262.          return var0 instanceof Container ? ((Container)var0).hasHeavyweightChildren() : false;
  263.       } else {
  264.          Container var3 = var1.getHeavyweightContainer();
  265.          Container var4 = var2.getHeavyweightContainer();
  266.          if (var3 != var4) {
  267.             return !var0.peer.isReparentSupported();
  268.          } else {
  269.             return !var0.isLightweight() && !((ContainerPeer)((ContainerPeer)var3.peer)).isRestackSupported();
  270.          }
  271.       }
  272.    }
  273.  
  274.    public void setComponentZOrder(Component var1, int var2) {
  275.       synchronized(this.getTreeLock()) {
  276.          Container var4 = var1.parent;
  277.          if (var4 != this || var2 != this.getComponentZOrder(var1)) {
  278.             this.checkAdding(var1, var2);
  279.             if (var4 != null) {
  280.                var4.removeDelicately(var1, this, var2);
  281.             }
  282.  
  283.             this.addDelicately(var1, var4, var2);
  284.          }
  285.       }
  286.    }
  287.  
  288.    private void reparentTraverse(ContainerPeer var1, Container var2) {
  289.       this.checkTreeLock();
  290.  
  291.       for(int var3 = 0; var3 < var2.getComponentCount(); ++var3) {
  292.          Component var4 = var2.getComponent(var3);
  293.          if (var4.isLightweight()) {
  294.             if (var4 instanceof Container) {
  295.                this.reparentTraverse(var1, (Container)var4);
  296.             }
  297.          } else {
  298.             var4.getPeer().reparent(var1);
  299.          }
  300.       }
  301.  
  302.    }
  303.  
  304.    private void reparentChild(Component var1) {
  305.       this.checkTreeLock();
  306.       if (var1 != null) {
  307.          if (var1.isLightweight()) {
  308.             if (var1 instanceof Container) {
  309.                this.reparentTraverse((ContainerPeer)this.getPeer(), (Container)var1);
  310.             }
  311.          } else {
  312.             var1.getPeer().reparent((ContainerPeer)this.getPeer());
  313.          }
  314.  
  315.       }
  316.    }
  317.  
  318.    private void addDelicately(Component var1, Container var2, int var3) {
  319.       this.checkTreeLock();
  320.       if (var2 != this) {
  321.          if (this.ncomponents == this.component.length) {
  322.             this.component = (Component[])Arrays.copyOf(this.component, this.ncomponents * 2 + 1);
  323.          }
  324.  
  325.          if (var3 != -1 && var3 != this.ncomponents) {
  326.             System.arraycopy(this.component, var3, this.component, var3 + 1, this.ncomponents - var3);
  327.             this.component[var3] = var1;
  328.             ++this.ncomponents;
  329.          } else {
  330.             this.component[this.ncomponents++] = var1;
  331.          }
  332.  
  333.          var1.parent = this;
  334.          this.adjustListeningChildren(32768L, var1.numListening(32768L));
  335.          this.adjustListeningChildren(65536L, var1.numListening(65536L));
  336.          this.adjustDescendants(var1.countHierarchyMembers());
  337.       } else if (var3 < this.ncomponents) {
  338.          this.component[var3] = var1;
  339.       }
  340.  
  341.       if (this.valid) {
  342.          this.invalidate();
  343.       }
  344.  
  345.       if (this.peer != null) {
  346.          if (var1.peer == null) {
  347.             var1.addNotify();
  348.             Container var4 = this.getHeavyweightContainer();
  349.             if (((ContainerPeer)var4.getPeer()).isRestackSupported()) {
  350.                ((ContainerPeer)var4.getPeer()).restack();
  351.             }
  352.          } else {
  353.             Container var6 = this.getHeavyweightContainer();
  354.             Container var5 = var2.getHeavyweightContainer();
  355.             if (var5 != var6) {
  356.                var6.reparentChild(var1);
  357.             }
  358.  
  359.             if ((!var1.isLightweight() || var1 instanceof Container) && ((ContainerPeer)var6.getPeer()).isRestackSupported()) {
  360.                ((ContainerPeer)var6.getPeer()).restack();
  361.             }
  362.  
  363.             if (!var1.isLightweight() && this.isLightweight()) {
  364.                if (!var2.isLightweight()) {
  365.                   var1.nativeInLightFixer = new Component.NativeInLightFixer(this);
  366.                } else {
  367.                   var1.nativeInLightFixer.install(this);
  368.                }
  369.             }
  370.          }
  371.       }
  372.  
  373.       if (var2 != this) {
  374.          if (this.layoutMgr != null) {
  375.             if (this.layoutMgr instanceof LayoutManager2) {
  376.                ((LayoutManager2)this.layoutMgr).addLayoutComponent(var1, (Object)null);
  377.             } else {
  378.                this.layoutMgr.addLayoutComponent((String)null, var1);
  379.             }
  380.          }
  381.  
  382.          if (this.containerListener != null || (this.eventMask & 2L) != 0L || Toolkit.enabledOnToolkit(2L)) {
  383.             ContainerEvent var7 = new ContainerEvent(this, 300, var1);
  384.             this.dispatchEvent(var7);
  385.          }
  386.  
  387.          var1.createHierarchyEvents(1400, var1, this, 1L, Toolkit.enabledOnToolkit(32768L));
  388.          if (var1.isFocusOwner() && !var1.canBeFocusOwner()) {
  389.             var1.transferFocus();
  390.          } else if (var1 instanceof Container) {
  391.             Component var8 = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
  392.             if (var8 != null && this.isParentOf(var8) && !var8.canBeFocusOwner()) {
  393.                var8.transferFocus();
  394.             }
  395.          }
  396.       } else {
  397.          var1.createHierarchyEvents(1400, var1, this, 1400L, Toolkit.enabledOnToolkit(32768L));
  398.       }
  399.  
  400.       if (this.peer != null && this.layoutMgr == null && this.isVisible()) {
  401.          this.updateCursorImmediately();
  402.       }
  403.  
  404.    }
  405.  
  406.    public int getComponentZOrder(Component var1) {
  407.       if (var1 == null) {
  408.          return -1;
  409.       } else {
  410.          synchronized(this.getTreeLock()) {
  411.             if (var1.parent != this) {
  412.                return -1;
  413.             } else {
  414.                for(int var3 = 0; var3 < this.ncomponents; ++var3) {
  415.                   if (this.component[var3] == var1) {
  416.                      return var3;
  417.                   }
  418.                }
  419.  
  420.                return -1;
  421.             }
  422.          }
  423.       }
  424.    }
  425.  
  426.    public void add(Component var1, Object var2) {
  427.       this.addImpl(var1, var2, -1);
  428.    }
  429.  
  430.    public void add(Component var1, Object var2, int var3) {
  431.       this.addImpl(var1, var2, var3);
  432.    }
  433.  
  434.    protected void addImpl(Component var1, Object var2, int var3) {
  435.       synchronized(this.getTreeLock()) {
  436.          GraphicsConfiguration var5 = this.getGraphicsConfiguration();
  437.          if (var3 <= this.ncomponents && (var3 >= 0 || var3 == -1)) {
  438.             if (var1 instanceof Container) {
  439.                for(Container var6 = this; var6 != null; var6 = var6.parent) {
  440.                   if (var6 == var1) {
  441.                      throw new IllegalArgumentException("adding container's parent to itself");
  442.                   }
  443.                }
  444.  
  445.                if (var1 instanceof Window) {
  446.                   throw new IllegalArgumentException("adding a window to a container");
  447.                }
  448.             }
  449.  
  450.             if (var5 != null) {
  451.                var1.checkGD(var5.getDevice().getIDstring());
  452.             }
  453.  
  454.             if (var1.parent != null) {
  455.                var1.parent.remove(var1);
  456.                if (var3 > this.ncomponents) {
  457.                   throw new IllegalArgumentException("illegal component position");
  458.                }
  459.             }
  460.  
  461.             if (this.ncomponents == this.component.length) {
  462.                this.component = (Component[])Arrays.copyOf(this.component, this.ncomponents * 2 + 1);
  463.             }
  464.  
  465.             if (var3 != -1 && var3 != this.ncomponents) {
  466.                System.arraycopy(this.component, var3, this.component, var3 + 1, this.ncomponents - var3);
  467.                this.component[var3] = var1;
  468.                ++this.ncomponents;
  469.             } else {
  470.                this.component[this.ncomponents++] = var1;
  471.             }
  472.  
  473.             var1.parent = this;
  474.             this.adjustListeningChildren(32768L, var1.numListening(32768L));
  475.             this.adjustListeningChildren(65536L, var1.numListening(65536L));
  476.             this.adjustDescendants(var1.countHierarchyMembers());
  477.             if (this.valid) {
  478.                this.invalidate();
  479.             }
  480.  
  481.             if (this.peer != null) {
  482.                var1.addNotify();
  483.             }
  484.  
  485.             if (this.layoutMgr != null) {
  486.                if (this.layoutMgr instanceof LayoutManager2) {
  487.                   ((LayoutManager2)this.layoutMgr).addLayoutComponent(var1, var2);
  488.                } else if (var2 instanceof String) {
  489.                   this.layoutMgr.addLayoutComponent((String)var2, var1);
  490.                }
  491.             }
  492.  
  493.             if (this.containerListener != null || (this.eventMask & 2L) != 0L || Toolkit.enabledOnToolkit(2L)) {
  494.                ContainerEvent var9 = new ContainerEvent(this, 300, var1);
  495.                this.dispatchEvent(var9);
  496.             }
  497.  
  498.             var1.createHierarchyEvents(1400, var1, this, 1L, Toolkit.enabledOnToolkit(32768L));
  499.             if (this.peer != null && this.layoutMgr == null && this.isVisible()) {
  500.                this.updateCursorImmediately();
  501.             }
  502.  
  503.          } else {
  504.             throw new IllegalArgumentException("illegal component position");
  505.          }
  506.       }
  507.    }
  508.  
  509.    void checkGD(String var1) {
  510.       for(int var3 = 0; var3 < this.component.length; ++var3) {
  511.          Component var2 = this.component[var3];
  512.          if (var2 != null) {
  513.             var2.checkGD(var1);
  514.          }
  515.       }
  516.  
  517.    }
  518.  
  519.    public void remove(int var1) {
  520.       synchronized(this.getTreeLock()) {
  521.          if (var1 >= 0 && var1 < this.ncomponents) {
  522.             Component var3 = this.component[var1];
  523.             if (this.peer != null) {
  524.                var3.removeNotify();
  525.             }
  526.  
  527.             if (this.layoutMgr != null) {
  528.                this.layoutMgr.removeLayoutComponent(var3);
  529.             }
  530.  
  531.             this.adjustListeningChildren(32768L, -var3.numListening(32768L));
  532.             this.adjustListeningChildren(65536L, -var3.numListening(65536L));
  533.             this.adjustDescendants(-var3.countHierarchyMembers());
  534.             var3.parent = null;
  535.             System.arraycopy(this.component, var1 + 1, this.component, var1, this.ncomponents - var1 - 1);
  536.             this.component[--this.ncomponents] = null;
  537.             if (this.valid) {
  538.                this.invalidate();
  539.             }
  540.  
  541.             if (this.containerListener != null || (this.eventMask & 2L) != 0L || Toolkit.enabledOnToolkit(2L)) {
  542.                ContainerEvent var4 = new ContainerEvent(this, 301, var3);
  543.                this.dispatchEvent(var4);
  544.             }
  545.  
  546.             var3.createHierarchyEvents(1400, var3, this, 1L, Toolkit.enabledOnToolkit(32768L));
  547.             if (this.peer != null && this.layoutMgr == null && this.isVisible()) {
  548.                this.updateCursorImmediately();
  549.             }
  550.  
  551.          } else {
  552.             throw new ArrayIndexOutOfBoundsException(var1);
  553.          }
  554.       }
  555.    }
  556.  
  557.    public void remove(Component var1) {
  558.       synchronized(this.getTreeLock()) {
  559.          if (var1.parent == this) {
  560.             Component[] var3 = this.component;
  561.             int var4 = this.ncomponents;
  562.  
  563.             while(true) {
  564.                --var4;
  565.                if (var4 < 0) {
  566.                   break;
  567.                }
  568.  
  569.                if (var3[var4] == var1) {
  570.                   this.remove(var4);
  571.                }
  572.             }
  573.          }
  574.  
  575.       }
  576.    }
  577.  
  578.    public void removeAll() {
  579.       synchronized(this.getTreeLock()) {
  580.          this.adjustListeningChildren(32768L, -this.listeningChildren);
  581.          this.adjustListeningChildren(65536L, -this.listeningBoundsChildren);
  582.          this.adjustDescendants(-this.descendantsCount);
  583.  
  584.          Component var2;
  585.          for(; this.ncomponents > 0; var2.createHierarchyEvents(1400, var2, this, 1L, Toolkit.enabledOnToolkit(32768L))) {
  586.             var2 = this.component[--this.ncomponents];
  587.             this.component[this.ncomponents] = null;
  588.             if (this.peer != null) {
  589.                var2.removeNotify();
  590.             }
  591.  
  592.             if (this.layoutMgr != null) {
  593.                this.layoutMgr.removeLayoutComponent(var2);
  594.             }
  595.  
  596.             var2.parent = null;
  597.             if (this.containerListener != null || (this.eventMask & 2L) != 0L || Toolkit.enabledOnToolkit(2L)) {
  598.                ContainerEvent var3 = new ContainerEvent(this, 301, var2);
  599.                this.dispatchEvent(var3);
  600.             }
  601.          }
  602.  
  603.          if (this.peer != null && this.layoutMgr == null && this.isVisible()) {
  604.             this.updateCursorImmediately();
  605.          }
  606.  
  607.          if (this.valid) {
  608.             this.invalidate();
  609.          }
  610.  
  611.       }
  612.    }
  613.  
  614.    int numListening(long var1) {
  615.       int var3 = super.numListening(var1);
  616.       if (var1 == 32768L) {
  617.          DebugHelper var5 = dbg;
  618.          return this.listeningChildren + var3;
  619.       } else if (var1 == 65536L) {
  620.          DebugHelper var4 = dbg;
  621.          return this.listeningBoundsChildren + var3;
  622.       } else {
  623.          DebugHelper var10000 = dbg;
  624.          return var3;
  625.       }
  626.    }
  627.  
  628.    void adjustListeningChildren(long var1, int var3) {
  629.       DebugHelper var10000 = dbg;
  630.       if (var3 != 0) {
  631.          if ((var1 & 32768L) != 0L) {
  632.             this.listeningChildren += var3;
  633.          }
  634.  
  635.          if ((var1 & 65536L) != 0L) {
  636.             this.listeningBoundsChildren += var3;
  637.          }
  638.  
  639.          this.adjustListeningChildrenOnParent(var1, var3);
  640.       }
  641.    }
  642.  
  643.    void adjustDescendants(int var1) {
  644.       if (var1 != 0) {
  645.          this.descendantsCount += var1;
  646.          this.adjustDecendantsOnParent(var1);
  647.       }
  648.    }
  649.  
  650.    void adjustDecendantsOnParent(int var1) {
  651.       if (this.parent != null) {
  652.          this.parent.adjustDescendants(var1);
  653.       }
  654.  
  655.    }
  656.  
  657.    int countHierarchyMembers() {
  658.       DebugHelper var10000 = dbg;
  659.       return this.descendantsCount + 1;
  660.    }
  661.  
  662.    private int getListenersCount(int var1, boolean var2) {
  663.       assert Thread.holdsLock(this.getTreeLock());
  664.  
  665.       if (var2) {
  666.          return this.descendantsCount;
  667.       } else {
  668.          switch (var1) {
  669.             case 1400:
  670.                return this.listeningChildren;
  671.             case 1401:
  672.             case 1402:
  673.                return this.listeningBoundsChildren;
  674.             default:
  675.                return 0;
  676.          }
  677.       }
  678.    }
  679.  
  680.    final int createHierarchyEvents(int var1, Component var2, Container var3, long var4, boolean var6) {
  681.       assert Thread.holdsLock(this.getTreeLock());
  682.  
  683.       int var7 = this.getListenersCount(var1, var6);
  684.       int var8 = var7;
  685.  
  686.       for(int var9 = 0; var8 > 0; ++var9) {
  687.          var8 -= this.component[var9].createHierarchyEvents(var1, var2, var3, var4, var6);
  688.       }
  689.  
  690.       return var7 + super.createHierarchyEvents(var1, var2, var3, var4, var6);
  691.    }
  692.  
  693.    final void createChildHierarchyEvents(int var1, long var2, boolean var4) {
  694.       assert Thread.holdsLock(this.getTreeLock());
  695.  
  696.       if (this.ncomponents != 0) {
  697.          int var5 = this.getListenersCount(var1, var4);
  698.          int var6 = var5;
  699.  
  700.          for(int var7 = 0; var6 > 0; ++var7) {
  701.             var6 -= this.component[var7].createHierarchyEvents(var1, this, this.parent, var2, var4);
  702.          }
  703.  
  704.       }
  705.    }
  706.  
  707.    public LayoutManager getLayout() {
  708.       return this.layoutMgr;
  709.    }
  710.  
  711.    public void setLayout(LayoutManager var1) {
  712.       this.layoutMgr = var1;
  713.       if (this.valid) {
  714.          this.invalidate();
  715.       }
  716.  
  717.    }
  718.  
  719.    public void doLayout() {
  720.       this.layout();
  721.    }
  722.  
  723.    /** @deprecated */
  724.    @Deprecated
  725.    public void layout() {
  726.       LayoutManager var1 = this.layoutMgr;
  727.       if (var1 != null) {
  728.          var1.layoutContainer(this);
  729.       }
  730.  
  731.    }
  732.  
  733.    public void invalidate() {
  734.       LayoutManager var1 = this.layoutMgr;
  735.       if (var1 instanceof LayoutManager2) {
  736.          LayoutManager2 var2 = (LayoutManager2)var1;
  737.          var2.invalidateLayout(this);
  738.       }
  739.  
  740.       super.invalidate();
  741.    }
  742.  
  743.    public void validate() {
  744.       if (!this.valid) {
  745.          boolean var1 = false;
  746.          synchronized(this.getTreeLock()) {
  747.             if (!this.valid && this.peer != null) {
  748.                ContainerPeer var3 = null;
  749.                if (this.peer instanceof ContainerPeer) {
  750.                   var3 = (ContainerPeer)this.peer;
  751.                }
  752.  
  753.                if (var3 != null) {
  754.                   var3.beginValidate();
  755.                }
  756.  
  757.                this.validateTree();
  758.                this.valid = true;
  759.                if (var3 != null) {
  760.                   var3.endValidate();
  761.                   var1 = this.isVisible();
  762.                }
  763.             }
  764.          }
  765.  
  766.          if (var1) {
  767.             this.updateCursorImmediately();
  768.          }
  769.       }
  770.  
  771.    }
  772.  
  773.    protected void validateTree() {
  774.       if (!this.valid) {
  775.          if (this.peer instanceof ContainerPeer) {
  776.             ((ContainerPeer)this.peer).beginLayout();
  777.          }
  778.  
  779.          this.doLayout();
  780.          Component[] var1 = this.component;
  781.  
  782.          for(int var2 = 0; var2 < this.ncomponents; ++var2) {
  783.             Component var3 = var1[var2];
  784.             if (var3 instanceof Container && !(var3 instanceof Window) && !var3.valid) {
  785.                ((Container)var3).validateTree();
  786.             } else {
  787.                var3.validate();
  788.             }
  789.          }
  790.  
  791.          if (this.peer instanceof ContainerPeer) {
  792.             ((ContainerPeer)this.peer).endLayout();
  793.          }
  794.       }
  795.  
  796.       this.valid = true;
  797.    }
  798.  
  799.    void invalidateTree() {
  800.       synchronized(this.getTreeLock()) {
  801.          for(int var2 = 0; var2 < this.ncomponents; ++var2) {
  802.             Component var3 = this.component[var2];
  803.             if (var3 instanceof Container) {
  804.                ((Container)var3).invalidateTree();
  805.             } else if (var3.valid) {
  806.                var3.invalidate();
  807.             }
  808.          }
  809.  
  810.          if (this.valid) {
  811.             this.invalidate();
  812.          }
  813.  
  814.       }
  815.    }
  816.  
  817.    public void setFont(Font var1) {
  818.       boolean var2 = false;
  819.       Font var3 = this.getFont();
  820.       super.setFont(var1);
  821.       Font var4 = this.getFont();
  822.       if (var4 != var3 && (var3 == null || !var3.equals(var4))) {
  823.          this.invalidateTree();
  824.       }
  825.  
  826.    }
  827.  
  828.    public Dimension getPreferredSize() {
  829.       return this.preferredSize();
  830.    }
  831.  
  832.    /** @deprecated */
  833.    @Deprecated
  834.    public Dimension preferredSize() {
  835.       Dimension var1 = this.prefSize;
  836.       if (var1 == null || !this.isPreferredSizeSet() && !this.isValid()) {
  837.          synchronized(this.getTreeLock()) {
  838.             this.prefSize = this.layoutMgr != null ? this.layoutMgr.preferredLayoutSize(this) : super.preferredSize();
  839.             var1 = this.prefSize;
  840.          }
  841.       }
  842.  
  843.       return var1 != null ? new Dimension(var1) : var1;
  844.    }
  845.  
  846.    public Dimension getMinimumSize() {
  847.       return this.minimumSize();
  848.    }
  849.  
  850.    /** @deprecated */
  851.    @Deprecated
  852.    public Dimension minimumSize() {
  853.       Dimension var1 = this.minSize;
  854.       if (var1 == null || !this.isMinimumSizeSet() && !this.isValid()) {
  855.          synchronized(this.getTreeLock()) {
  856.             this.minSize = this.layoutMgr != null ? this.layoutMgr.minimumLayoutSize(this) : super.minimumSize();
  857.             var1 = this.minSize;
  858.          }
  859.       }
  860.  
  861.       return var1 != null ? new Dimension(var1) : var1;
  862.    }
  863.  
  864.    public Dimension getMaximumSize() {
  865.       Dimension var1 = this.maxSize;
  866.       if (var1 == null || !this.isMaximumSizeSet() && !this.isValid()) {
  867.          synchronized(this.getTreeLock()) {
  868.             if (this.layoutMgr instanceof LayoutManager2) {
  869.                LayoutManager2 var3 = (LayoutManager2)this.layoutMgr;
  870.                this.maxSize = var3.maximumLayoutSize(this);
  871.             } else {
  872.                this.maxSize = super.getMaximumSize();
  873.             }
  874.  
  875.             var1 = this.maxSize;
  876.          }
  877.       }
  878.  
  879.       return var1 != null ? new Dimension(var1) : var1;
  880.    }
  881.  
  882.    public float getAlignmentX() {
  883.       float var1;
  884.       if (this.layoutMgr instanceof LayoutManager2) {
  885.          synchronized(this.getTreeLock()) {
  886.             LayoutManager2 var3 = (LayoutManager2)this.layoutMgr;
  887.             var1 = var3.getLayoutAlignmentX(this);
  888.          }
  889.       } else {
  890.          var1 = super.getAlignmentX();
  891.       }
  892.  
  893.       return var1;
  894.    }
  895.  
  896.    public float getAlignmentY() {
  897.       float var1;
  898.       if (this.layoutMgr instanceof LayoutManager2) {
  899.          synchronized(this.getTreeLock()) {
  900.             LayoutManager2 var3 = (LayoutManager2)this.layoutMgr;
  901.             var1 = var3.getLayoutAlignmentY(this);
  902.          }
  903.       } else {
  904.          var1 = super.getAlignmentY();
  905.       }
  906.  
  907.       return var1;
  908.    }
  909.  
  910.    public void paint(Graphics var1) {
  911.       if (this.isShowing()) {
  912.          if (this.printing) {
  913.             synchronized(this) {
  914.                if (this.printing && this.printingThreads.contains(Thread.currentThread())) {
  915.                   return;
  916.                }
  917.             }
  918.          }
  919.  
  920.          PaintCallback.getInstance().runComponents(this.component, var1, 2);
  921.       }
  922.  
  923.    }
  924.  
  925.    public void update(Graphics var1) {
  926.       if (this.isShowing()) {
  927.          if (!(this.peer instanceof LightweightPeer)) {
  928.             var1.clearRect(0, 0, this.width, this.height);
  929.          }
  930.  
  931.          this.paint(var1);
  932.       }
  933.  
  934.    }
  935.  
  936.    public void print(Graphics var1) {
  937.       if (this.isShowing()) {
  938.          Thread var2 = Thread.currentThread();
  939.  
  940.          try {
  941.             synchronized(this) {
  942.                if (this.printingThreads == null) {
  943.                   this.printingThreads = new HashSet();
  944.                }
  945.  
  946.                this.printingThreads.add(var2);
  947.                this.printing = true;
  948.             }
  949.  
  950.             super.print(var1);
  951.          } finally {
  952.             synchronized(this) {
  953.                this.printingThreads.remove(var2);
  954.                this.printing = !this.printingThreads.isEmpty();
  955.             }
  956.          }
  957.  
  958.          PrintCallback.getInstance().runComponents(this.component, var1, 2);
  959.       }
  960.  
  961.    }
  962.  
  963.    public void paintComponents(Graphics var1) {
  964.       if (this.isShowing()) {
  965.          PaintAllCallback.getInstance().runComponents(this.component, var1, 4);
  966.       }
  967.  
  968.    }
  969.  
  970.    void lightweightPaint(Graphics var1) {
  971.       super.lightweightPaint(var1);
  972.       this.paintHeavyweightComponents(var1);
  973.    }
  974.  
  975.    void paintHeavyweightComponents(Graphics var1) {
  976.       if (this.isShowing()) {
  977.          PaintHeavyweightComponentsCallback.getInstance().runComponents(this.component, var1, 3);
  978.       }
  979.  
  980.    }
  981.  
  982.    public void printComponents(Graphics var1) {
  983.       if (this.isShowing()) {
  984.          PrintAllCallback.getInstance().runComponents(this.component, var1, 4);
  985.       }
  986.  
  987.    }
  988.  
  989.    void lightweightPrint(Graphics var1) {
  990.       super.lightweightPrint(var1);
  991.       this.printHeavyweightComponents(var1);
  992.    }
  993.  
  994.    void printHeavyweightComponents(Graphics var1) {
  995.       if (this.isShowing()) {
  996.          PrintHeavyweightComponentsCallback.getInstance().runComponents(this.component, var1, 3);
  997.       }
  998.  
  999.    }
  1000.  
  1001.    public synchronized void addContainerListener(ContainerListener var1) {
  1002.       if (var1 != null) {
  1003.          this.containerListener = AWTEventMulticaster.add(this.containerListener, var1);
  1004.          this.newEventsOnly = true;
  1005.       }
  1006.    }
  1007.  
  1008.    public synchronized void removeContainerListener(ContainerListener var1) {
  1009.       if (var1 != null) {
  1010.          this.containerListener = AWTEventMulticaster.remove(this.containerListener, var1);
  1011.       }
  1012.    }
  1013.  
  1014.    public synchronized ContainerListener[] getContainerListeners() {
  1015.       return (ContainerListener[])this.getListeners(ContainerListener.class);
  1016.    }
  1017.  
  1018.    public <T extends EventListener> T[] getListeners(Class<T> var1) {
  1019.       Object var2 = null;
  1020.       if (var1 == ContainerListener.class) {
  1021.          ContainerListener var3 = this.containerListener;
  1022.          return (T[])AWTEventMulticaster.getListeners(var3, var1);
  1023.       } else {
  1024.          return (T[])super.getListeners(var1);
  1025.       }
  1026.    }
  1027.  
  1028.    boolean eventEnabled(AWTEvent var1) {
  1029.       int var2 = var1.getID();
  1030.       if (var2 != 300 && var2 != 301) {
  1031.          return super.eventEnabled(var1);
  1032.       } else {
  1033.          return (this.eventMask & 2L) != 0L || this.containerListener != null;
  1034.       }
  1035.    }
  1036.  
  1037.    protected void processEvent(AWTEvent var1) {
  1038.       if (var1 instanceof ContainerEvent) {
  1039.          this.processContainerEvent((ContainerEvent)var1);
  1040.       } else {
  1041.          super.processEvent(var1);
  1042.       }
  1043.    }
  1044.  
  1045.    protected void processContainerEvent(ContainerEvent var1) {
  1046.       ContainerListener var2 = this.containerListener;
  1047.       if (var2 != null) {
  1048.          switch (var1.getID()) {
  1049.             case 300:
  1050.                var2.componentAdded(var1);
  1051.                break;
  1052.             case 301:
  1053.                var2.componentRemoved(var1);
  1054.          }
  1055.       }
  1056.  
  1057.    }
  1058.  
  1059.    void dispatchEventImpl(AWTEvent var1) {
  1060.       if (this.dispatcher != null && this.dispatcher.dispatchEvent(var1)) {
  1061.          var1.consume();
  1062.          if (this.peer != null) {
  1063.             this.peer.handleEvent(var1);
  1064.          }
  1065.  
  1066.       } else {
  1067.          super.dispatchEventImpl(var1);
  1068.          synchronized(this.getTreeLock()) {
  1069.             switch (var1.getID()) {
  1070.                case 100:
  1071.                   this.createChildHierarchyEvents(1401, 0L, Toolkit.enabledOnToolkit(65536L));
  1072.                   break;
  1073.                case 101:
  1074.                   this.createChildHierarchyEvents(1402, 0L, Toolkit.enabledOnToolkit(65536L));
  1075.             }
  1076.  
  1077.          }
  1078.       }
  1079.    }
  1080.  
  1081.    void dispatchEventToSelf(AWTEvent var1) {
  1082.       super.dispatchEventImpl(var1);
  1083.    }
  1084.  
  1085.    Component getMouseEventTarget(int var1, int var2, boolean var3) {
  1086.       return this.getMouseEventTarget(var1, var2, var3, java.awt.Container.MouseEventTargetFilter.FILTER, false);
  1087.    }
  1088.  
  1089.    Component getDropTargetEventTarget(int var1, int var2, boolean var3) {
  1090.       return this.getMouseEventTarget(var1, var2, var3, java.awt.Container.DropTargetEventTargetFilter.FILTER, true);
  1091.    }
  1092.  
  1093.    private Component getMouseEventTarget(int var1, int var2, boolean var3, EventTargetFilter var4, boolean var5) {
  1094.       Component var6 = null;
  1095.       if (var5) {
  1096.          var6 = this.getMouseEventTargetImpl(var1, var2, var3, var4, true, var5);
  1097.       }
  1098.  
  1099.       if (var6 == null || var6 == this) {
  1100.          var6 = this.getMouseEventTargetImpl(var1, var2, var3, var4, false, var5);
  1101.       }
  1102.  
  1103.       return var6;
  1104.    }
  1105.  
  1106.    private Component getMouseEventTargetImpl(int var1, int var2, boolean var3, EventTargetFilter var4, boolean var5, boolean var6) {
  1107.       int var7 = this.ncomponents;
  1108.       Component[] var8 = this.component;
  1109.  
  1110.       for(int var9 = 0; var9 < var7; ++var9) {
  1111.          Component var10 = var8[var9];
  1112.          if (var10 != null && var10.visible && (!var5 && var10.peer instanceof LightweightPeer || var5 && !(var10.peer instanceof LightweightPeer)) && var10.contains(var1 - var10.x, var2 - var10.y)) {
  1113.             if (var10 instanceof Container) {
  1114.                Container var11 = (Container)var10;
  1115.                Component var12 = var11.getMouseEventTarget(var1 - var11.x, var2 - var11.y, var3, var4, var6);
  1116.                if (var12 != null) {
  1117.                   return var12;
  1118.                }
  1119.             } else if (var4.accept(var10)) {
  1120.                return var10;
  1121.             }
  1122.          }
  1123.       }
  1124.  
  1125.       boolean var13 = this.peer instanceof LightweightPeer || var3;
  1126.       boolean var14 = this.contains(var1, var2);
  1127.       if (var14 && var13 && var4.accept(this)) {
  1128.          return this;
  1129.       } else {
  1130.          return null;
  1131.       }
  1132.    }
  1133.  
  1134.    void proxyEnableEvents(long var1) {
  1135.       if (this.peer instanceof LightweightPeer) {
  1136.          if (this.parent != null) {
  1137.             this.parent.proxyEnableEvents(var1);
  1138.          }
  1139.       } else if (this.dispatcher != null) {
  1140.          this.dispatcher.enableEvents(var1);
  1141.       }
  1142.  
  1143.    }
  1144.  
  1145.    /** @deprecated */
  1146.    @Deprecated
  1147.    public void deliverEvent(Event var1) {
  1148.       Component var2 = this.getComponentAt(var1.x, var1.y);
  1149.       if (var2 != null && var2 != this) {
  1150.          var1.translate(-var2.x, -var2.y);
  1151.          var2.deliverEvent(var1);
  1152.       } else {
  1153.          this.postEvent(var1);
  1154.       }
  1155.  
  1156.    }
  1157.  
  1158.    public Component getComponentAt(int var1, int var2) {
  1159.       return this.locate(var1, var2);
  1160.    }
  1161.  
  1162.    /** @deprecated */
  1163.    @Deprecated
  1164.    public Component locate(int var1, int var2) {
  1165.       if (!this.contains(var1, var2)) {
  1166.          return null;
  1167.       } else {
  1168.          synchronized(this.getTreeLock()) {
  1169.             for(int var4 = 0; var4 < this.ncomponents; ++var4) {
  1170.                Component var5 = this.component[var4];
  1171.                if (var5 != null && !(var5.peer instanceof LightweightPeer) && var5.contains(var1 - var5.x, var2 - var5.y)) {
  1172.                   return var5;
  1173.                }
  1174.             }
  1175.  
  1176.             for(int var8 = 0; var8 < this.ncomponents; ++var8) {
  1177.                Component var9 = this.component[var8];
  1178.                if (var9 != null && var9.peer instanceof LightweightPeer && var9.contains(var1 - var9.x, var2 - var9.y)) {
  1179.                   return var9;
  1180.                }
  1181.             }
  1182.  
  1183.             return this;
  1184.          }
  1185.       }
  1186.    }
  1187.  
  1188.    public Component getComponentAt(Point var1) {
  1189.       return this.getComponentAt(var1.x, var1.y);
  1190.    }
  1191.  
  1192.    public Point getMousePosition(boolean var1) throws HeadlessException {
  1193.       if (GraphicsEnvironment.isHeadless()) {
  1194.          throw new HeadlessException();
  1195.       } else {
  1196.          PointerInfo var2 = (PointerInfo)AccessController.doPrivileged(new 1(this));
  1197.          synchronized(this.getTreeLock()) {
  1198.             Component var4 = this.findUnderMouseInWindow(var2);
  1199.             return this.isSameOrAncestorOf(var4, var1) ? this.pointRelativeToComponent(var2.getLocation()) : null;
  1200.          }
  1201.       }
  1202.    }
  1203.  
  1204.    boolean isSameOrAncestorOf(Component var1, boolean var2) {
  1205.       return this == var1 || var2 && this.isParentOf(var1);
  1206.    }
  1207.  
  1208.    public Component findComponentAt(int var1, int var2) {
  1209.       synchronized(this.getTreeLock()) {
  1210.          return this.findComponentAt(var1, var2, true);
  1211.       }
  1212.    }
  1213.  
  1214.    final Component findComponentAt(int var1, int var2, boolean var3) {
  1215.       return this.isRecursivelyVisible() ? this.findComponentAtImpl(var1, var2, var3) : null;
  1216.    }
  1217.  
  1218.    final Component findComponentAtImpl(int var1, int var2, boolean var3) {
  1219.       if (this.contains(var1, var2) && this.visible && (var3 || this.enabled)) {
  1220.          int var4 = this.ncomponents;
  1221.          Component[] var5 = this.component;
  1222.  
  1223.          for(int var6 = 0; var6 < var4; ++var6) {
  1224.             Component var7 = var5[var6];
  1225.             if (var7 != null && !(var7.peer instanceof LightweightPeer)) {
  1226.                if (var7 instanceof Container) {
  1227.                   var7 = ((Container)var7).findComponentAtImpl(var1 - var7.x, var2 - var7.y, var3);
  1228.                } else {
  1229.                   var7 = var7.locate(var1 - var7.x, var2 - var7.y);
  1230.                }
  1231.  
  1232.                if (var7 != null && var7.visible && (var3 || var7.enabled)) {
  1233.                   return var7;
  1234.                }
  1235.             }
  1236.          }
  1237.  
  1238.          for(int var8 = 0; var8 < var4; ++var8) {
  1239.             Component var10 = var5[var8];
  1240.             if (var10 != null && var10.peer instanceof LightweightPeer) {
  1241.                if (var10 instanceof Container) {
  1242.                   var10 = ((Container)var10).findComponentAtImpl(var1 - var10.x, var2 - var10.y, var3);
  1243.                } else {
  1244.                   var10 = var10.locate(var1 - var10.x, var2 - var10.y);
  1245.                }
  1246.  
  1247.                if (var10 != null && var10.visible && (var3 || var10.enabled)) {
  1248.                   return var10;
  1249.                }
  1250.             }
  1251.          }
  1252.  
  1253.          return this;
  1254.       } else {
  1255.          return null;
  1256.       }
  1257.    }
  1258.  
  1259.    public Component findComponentAt(Point var1) {
  1260.       return this.findComponentAt(var1.x, var1.y);
  1261.    }
  1262.  
  1263.    public void addNotify() {
  1264.       synchronized(this.getTreeLock()) {
  1265.          super.addNotify();
  1266.          if (!(this.peer instanceof LightweightPeer)) {
  1267.             this.dispatcher = new LightweightDispatcher(this);
  1268.          }
  1269.  
  1270.          int var2 = this.ncomponents;
  1271.          Component[] var3 = this.component;
  1272.  
  1273.          for(int var4 = 0; var4 < var2; ++var4) {
  1274.             var3[var4].addNotify();
  1275.          }
  1276.  
  1277.          ContainerPeer var7 = (ContainerPeer)this.peer;
  1278.          if (var7.isRestackSupported()) {
  1279.             var7.restack();
  1280.          }
  1281.  
  1282.       }
  1283.    }
  1284.  
  1285.    public void removeNotify() {
  1286.       synchronized(this.getTreeLock()) {
  1287.          int var2 = this.ncomponents;
  1288.          Component[] var3 = this.component;
  1289.  
  1290.          for(int var4 = var2 - 1; var4 >= 0; --var4) {
  1291.             if (var3[var4] != null) {
  1292.                var3[var4].removeNotify();
  1293.             }
  1294.          }
  1295.  
  1296.          if (this.dispatcher != null) {
  1297.             this.dispatcher.dispose();
  1298.             this.dispatcher = null;
  1299.          }
  1300.  
  1301.          super.removeNotify();
  1302.       }
  1303.    }
  1304.  
  1305.    public boolean isAncestorOf(Component var1) {
  1306.       Container var2;
  1307.       if (var1 != null && (var2 = var1.getParent()) != null) {
  1308.          while(var2 != null) {
  1309.             if (var2 == this) {
  1310.                return true;
  1311.             }
  1312.  
  1313.             var2 = var2.getParent();
  1314.          }
  1315.  
  1316.          return false;
  1317.       } else {
  1318.          return false;
  1319.       }
  1320.    }
  1321.  
  1322.    private void startLWModal() {
  1323.       this.modalAppContext = AppContext.getAppContext();
  1324.       Toolkit.getEventQueue();
  1325.       long var1 = EventQueue.getMostRecentEventTime();
  1326.       Component var3 = Component.isInstanceOf(this, "javax.swing.JInternalFrame") ? ((JInternalFrame)((JInternalFrame)this)).getMostRecentFocusOwner() : null;
  1327.       if (var3 != null) {
  1328.          KeyboardFocusManager.getCurrentKeyboardFocusManager().enqueueKeyEvents(var1, var3);
  1329.       }
  1330.  
  1331.       Container var4;
  1332.       synchronized(this.getTreeLock()) {
  1333.          var4 = this.getHeavyweightContainer();
  1334.          if (var4.modalComp != null) {
  1335.             this.modalComp = var4.modalComp;
  1336.             var4.modalComp = this;
  1337.             return;
  1338.          }
  1339.  
  1340.          var4.modalComp = this;
  1341.       }
  1342.  
  1343.       2 var5 = new 2(this, var4);
  1344.       if (EventQueue.isDispatchThread()) {
  1345.          SequencedEvent var6 = KeyboardFocusManager.getCurrentKeyboardFocusManager().getCurrentSequencedEvent();
  1346.          if (var6 != null) {
  1347.             var6.dispose();
  1348.          }
  1349.  
  1350.          var5.run();
  1351.       } else {
  1352.          synchronized(this.getTreeLock()) {
  1353.             Toolkit.getEventQueue().postEvent(new PeerEvent(this, var5, 1L));
  1354.  
  1355.             while(this.windowClosingException == null) {
  1356.                try {
  1357.                   this.getTreeLock().wait();
  1358.                } catch (InterruptedException var9) {
  1359.                   break;
  1360.                }
  1361.             }
  1362.          }
  1363.       }
  1364.  
  1365.       if (this.windowClosingException != null) {
  1366.          this.windowClosingException.fillInStackTrace();
  1367.          throw this.windowClosingException;
  1368.       } else {
  1369.          if (var3 != null) {
  1370.             KeyboardFocusManager.getCurrentKeyboardFocusManager().dequeueKeyEvents(var1, var3);
  1371.          }
  1372.  
  1373.       }
  1374.    }
  1375.  
  1376.    private void stopLWModal() {
  1377.       synchronized(this.getTreeLock()) {
  1378.          if (this.modalAppContext != null) {
  1379.             Container var2 = this.getHeavyweightContainer();
  1380.             if (var2 != null) {
  1381.                if (this.modalComp != null) {
  1382.                   var2.modalComp = this.modalComp;
  1383.                   this.modalComp = null;
  1384.                   return;
  1385.                }
  1386.  
  1387.                var2.modalComp = null;
  1388.             }
  1389.  
  1390.             SunToolkit.postEvent(this.modalAppContext, new PeerEvent(this, new WakingRunnable(), 1L));
  1391.          }
  1392.  
  1393.          EventQueue.invokeLater(new WakingRunnable());
  1394.          this.getTreeLock().notifyAll();
  1395.       }
  1396.    }
  1397.  
  1398.    protected String paramString() {
  1399.       String var1 = super.paramString();
  1400.       LayoutManager var2 = this.layoutMgr;
  1401.       if (var2 != null) {
  1402.          var1 = var1 + ",layout=" + var2.getClass().getName();
  1403.       }
  1404.  
  1405.       return var1;
  1406.    }
  1407.  
  1408.    public void list(PrintStream var1, int var2) {
  1409.       super.list(var1, var2);
  1410.       int var3 = this.ncomponents;
  1411.       Component[] var4 = this.component;
  1412.  
  1413.       for(int var5 = 0; var5 < var3; ++var5) {
  1414.          Component var6 = var4[var5];
  1415.          if (var6 != null) {
  1416.             var6.list(var1, var2 + 1);
  1417.          }
  1418.       }
  1419.  
  1420.    }
  1421.  
  1422.    public void list(PrintWriter var1, int var2) {
  1423.       super.list(var1, var2);
  1424.       int var3 = this.ncomponents;
  1425.       Component[] var4 = this.component;
  1426.  
  1427.       for(int var5 = 0; var5 < var3; ++var5) {
  1428.          Component var6 = var4[var5];
  1429.          if (var6 != null) {
  1430.             var6.list(var1, var2 + 1);
  1431.          }
  1432.       }
  1433.  
  1434.    }
  1435.  
  1436.    public void setFocusTraversalKeys(int var1, Set<? extends AWTKeyStroke> var2) {
  1437.       if (var1 >= 0 && var1 < 4) {
  1438.          this.setFocusTraversalKeys_NoIDCheck(var1, var2);
  1439.       } else {
  1440.          throw new IllegalArgumentException("invalid focus traversal key identifier");
  1441.       }
  1442.    }
  1443.  
  1444.    public Set<AWTKeyStroke> getFocusTraversalKeys(int var1) {
  1445.       if (var1 >= 0 && var1 < 4) {
  1446.          return this.getFocusTraversalKeys_NoIDCheck(var1);
  1447.       } else {
  1448.          throw new IllegalArgumentException("invalid focus traversal key identifier");
  1449.       }
  1450.    }
  1451.  
  1452.    public boolean areFocusTraversalKeysSet(int var1) {
  1453.       if (var1 >= 0 && var1 < 4) {
  1454.          return this.focusTraversalKeys != null && this.focusTraversalKeys[var1] != null;
  1455.       } else {
  1456.          throw new IllegalArgumentException("invalid focus traversal key identifier");
  1457.       }
  1458.    }
  1459.  
  1460.    public boolean isFocusCycleRoot(Container var1) {
  1461.       return this.isFocusCycleRoot() && var1 == this ? true : super.isFocusCycleRoot(var1);
  1462.    }
  1463.  
  1464.    private Container findTraversalRoot() {
  1465.       Container var1 = KeyboardFocusManager.getCurrentKeyboardFocusManager().getCurrentFocusCycleRoot();
  1466.       Container var2;
  1467.       if (var1 == this) {
  1468.          var2 = this;
  1469.       } else {
  1470.          var2 = this.getFocusCycleRootAncestor();
  1471.          if (var2 == null) {
  1472.             var2 = this;
  1473.          }
  1474.       }
  1475.  
  1476.       if (var2 != var1) {
  1477.          KeyboardFocusManager.getCurrentKeyboardFocusManager().setGlobalCurrentFocusCycleRoot(var2);
  1478.       }
  1479.  
  1480.       return var2;
  1481.    }
  1482.  
  1483.    final boolean containsFocus() {
  1484.       synchronized(this.getTreeLock()) {
  1485.          Object var2;
  1486.          for(var2 = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); var2 != null && !(var2 instanceof Window) && var2 != this; var2 = ((Component)var2).getParent()) {
  1487.          }
  1488.  
  1489.          return var2 == this;
  1490.       }
  1491.    }
  1492.  
  1493.    boolean isParentOf(Component var1) {
  1494.       synchronized(this.getTreeLock()) {
  1495.          while(var1 != null && var1 != this && !(var1 instanceof Window)) {
  1496.             var1 = ((Component)var1).getParent();
  1497.          }
  1498.  
  1499.          return var1 == this;
  1500.       }
  1501.    }
  1502.  
  1503.    void clearMostRecentFocusOwnerOnHide() {
  1504.       Object var1 = null;
  1505.       Container var2 = this;
  1506.       synchronized(this.getTreeLock()) {
  1507.          while(var2 != null && !(var2 instanceof Window)) {
  1508.             var2 = var2.getParent();
  1509.          }
  1510.  
  1511.          if (var2 != null) {
  1512.             for(var1 = KeyboardFocusManager.getMostRecentFocusOwner((Window)var2); var1 != null && var1 != this && !(var1 instanceof Window); var1 = ((Component)var1).getParent()) {
  1513.             }
  1514.          }
  1515.       }
  1516.  
  1517.       if (var1 == this) {
  1518.          KeyboardFocusManager.setMostRecentFocusOwner((Window)var2, (Component)null);
  1519.       }
  1520.  
  1521.       if (var2 != null) {
  1522.          Window var3 = (Window)var2;
  1523.          synchronized(this.getTreeLock()) {
  1524.             synchronized(KeyboardFocusManager.class) {
  1525.                Component var6 = var3.getTemporaryLostComponent();
  1526.                if (this.isParentOf(var6) || var6 == this) {
  1527.                   var3.setTemporaryLostComponent((Component)null);
  1528.                }
  1529.             }
  1530.          }
  1531.       }
  1532.  
  1533.    }
  1534.  
  1535.    void clearCurrentFocusCycleRootOnHide() {
  1536.       KeyboardFocusManager var1 = KeyboardFocusManager.getCurrentKeyboardFocusManager();
  1537.       Container var2 = var1.getCurrentFocusCycleRoot();
  1538.       synchronized(this.getTreeLock()) {
  1539.          while(this != var2 && !(var2 instanceof Window) && var2 != null) {
  1540.             var2 = var2.getParent();
  1541.          }
  1542.       }
  1543.  
  1544.       if (var2 == this) {
  1545.          var1.setGlobalCurrentFocusCycleRoot((Container)null);
  1546.       }
  1547.  
  1548.    }
  1549.  
  1550.    boolean nextFocusHelper() {
  1551.       if (!this.isFocusCycleRoot()) {
  1552.          return super.nextFocusHelper();
  1553.       } else {
  1554.          Container var1 = this.findTraversalRoot();
  1555.  
  1556.          Container var2;
  1557.          Container var3;
  1558.          for(var2 = this; var1 != null && (var3 = var1.getFocusCycleRootAncestor()) != null && (!var1.isShowing() || !var1.isFocusable() || !var1.isEnabled()); var1 = var3) {
  1559.             var2 = var1;
  1560.          }
  1561.  
  1562.          if (var1 != null) {
  1563.             FocusTraversalPolicy var4 = var1.getFocusTraversalPolicy();
  1564.             Component var5 = var4.getComponentAfter(var1, var2);
  1565.             if (var5 == null) {
  1566.                var5 = var4.getDefaultComponent(var1);
  1567.             }
  1568.  
  1569.             if (var5 != null) {
  1570.                return var5.requestFocus(false, Cause.TRAVERSAL_FORWARD);
  1571.             }
  1572.          }
  1573.  
  1574.          return false;
  1575.       }
  1576.    }
  1577.  
  1578.    public void transferFocusBackward() {
  1579.       if (this.isFocusCycleRoot()) {
  1580.          Container var1 = this.findTraversalRoot();
  1581.  
  1582.          Container var2;
  1583.          for(var2 = this; var1 != null && (!var1.isShowing() || !var1.isFocusable() || !var1.isEnabled()); var1 = ((Component)var1).getFocusCycleRootAncestor()) {
  1584.             var2 = var1;
  1585.          }
  1586.  
  1587.          if (var1 != null) {
  1588.             FocusTraversalPolicy var3 = var1.getFocusTraversalPolicy();
  1589.             Component var4 = var3.getComponentBefore(var1, var2);
  1590.             if (var4 == null) {
  1591.                var4 = var3.getDefaultComponent(var1);
  1592.             }
  1593.  
  1594.             if (var4 != null) {
  1595.                var4.requestFocus(Cause.TRAVERSAL_BACKWARD);
  1596.             }
  1597.          }
  1598.       } else {
  1599.          super.transferFocusBackward();
  1600.       }
  1601.  
  1602.    }
  1603.  
  1604.    public void setFocusTraversalPolicy(FocusTraversalPolicy var1) {
  1605.       FocusTraversalPolicy var2;
  1606.       synchronized(this) {
  1607.          var2 = this.focusTraversalPolicy;
  1608.          this.focusTraversalPolicy = var1;
  1609.       }
  1610.  
  1611.       this.firePropertyChange("focusTraversalPolicy", var2, var1);
  1612.    }
  1613.  
  1614.    public FocusTraversalPolicy getFocusTraversalPolicy() {
  1615.       if (!this.isFocusTraversalPolicyProvider() && !this.isFocusCycleRoot()) {
  1616.          return null;
  1617.       } else {
  1618.          FocusTraversalPolicy var1 = this.focusTraversalPolicy;
  1619.          if (var1 != null) {
  1620.             return var1;
  1621.          } else {
  1622.             Container var2 = this.getFocusCycleRootAncestor();
  1623.             return var2 != null ? var2.getFocusTraversalPolicy() : KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalPolicy();
  1624.          }
  1625.       }
  1626.    }
  1627.  
  1628.    public boolean isFocusTraversalPolicySet() {
  1629.       return this.focusTraversalPolicy != null;
  1630.    }
  1631.  
  1632.    public void setFocusCycleRoot(boolean var1) {
  1633.       boolean var2;
  1634.       synchronized(this) {
  1635.          var2 = this.focusCycleRoot;
  1636.          this.focusCycleRoot = var1;
  1637.       }
  1638.  
  1639.       this.firePropertyChange("focusCycleRoot", var2, var1);
  1640.    }
  1641.  
  1642.    public boolean isFocusCycleRoot() {
  1643.       return this.focusCycleRoot;
  1644.    }
  1645.  
  1646.    public final void setFocusTraversalPolicyProvider(boolean var1) {
  1647.       boolean var2;
  1648.       synchronized(this) {
  1649.          var2 = this.focusTraversalPolicyProvider;
  1650.          this.focusTraversalPolicyProvider = var1;
  1651.       }
  1652.  
  1653.       this.firePropertyChange("focusTraversalPolicyProvider", var2, var1);
  1654.    }
  1655.  
  1656.    public final boolean isFocusTraversalPolicyProvider() {
  1657.       return this.focusTraversalPolicyProvider;
  1658.    }
  1659.  
  1660.    public void transferFocusDownCycle() {
  1661.       if (this.isFocusCycleRoot()) {
  1662.          KeyboardFocusManager.getCurrentKeyboardFocusManager().setGlobalCurrentFocusCycleRoot(this);
  1663.          Component var1 = this.getFocusTraversalPolicy().getDefaultComponent(this);
  1664.          if (var1 != null) {
  1665.             var1.requestFocus(Cause.TRAVERSAL_DOWN);
  1666.          }
  1667.       }
  1668.  
  1669.    }
  1670.  
  1671.    void preProcessKeyEvent(KeyEvent var1) {
  1672.       Container var2 = this.parent;
  1673.       if (var2 != null) {
  1674.          var2.preProcessKeyEvent(var1);
  1675.       }
  1676.  
  1677.    }
  1678.  
  1679.    void postProcessKeyEvent(KeyEvent var1) {
  1680.       Container var2 = this.parent;
  1681.       if (var2 != null) {
  1682.          var2.postProcessKeyEvent(var1);
  1683.       }
  1684.  
  1685.    }
  1686.  
  1687.    boolean postsOldMouseEvents() {
  1688.       return true;
  1689.    }
  1690.  
  1691.    public void applyComponentOrientation(ComponentOrientation var1) {
  1692.       super.applyComponentOrientation(var1);
  1693.  
  1694.       for(int var2 = 0; var2 < this.ncomponents; ++var2) {
  1695.          this.component[var2].applyComponentOrientation(var1);
  1696.       }
  1697.  
  1698.    }
  1699.  
  1700.    public void addPropertyChangeListener(PropertyChangeListener var1) {
  1701.       super.addPropertyChangeListener(var1);
  1702.    }
  1703.  
  1704.    public void addPropertyChangeListener(String var1, PropertyChangeListener var2) {
  1705.       super.addPropertyChangeListener(var1, var2);
  1706.    }
  1707.  
  1708.    private void writeObject(ObjectOutputStream var1) throws IOException {
  1709.       ObjectOutputStream.PutField var2 = var1.putFields();
  1710.       var2.put("ncomponents", this.ncomponents);
  1711.       var2.put("component", this.component);
  1712.       var2.put("layoutMgr", this.layoutMgr);
  1713.       var2.put("dispatcher", this.dispatcher);
  1714.       var2.put("maxSize", this.maxSize);
  1715.       var2.put("focusCycleRoot", this.focusCycleRoot);
  1716.       var2.put("containerSerializedDataVersion", this.containerSerializedDataVersion);
  1717.       var2.put("focusTraversalPolicyProvider", this.focusTraversalPolicyProvider);
  1718.       var1.writeFields();
  1719.       AWTEventMulticaster.save(var1, "containerL", this.containerListener);
  1720.       var1.writeObject((Object)null);
  1721.       if (this.focusTraversalPolicy instanceof Serializable) {
  1722.          var1.writeObject(this.focusTraversalPolicy);
  1723.       } else {
  1724.          var1.writeObject((Object)null);
  1725.       }
  1726.  
  1727.    }
  1728.  
  1729.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  1730.       ObjectInputStream.GetField var2 = var1.readFields();
  1731.       this.ncomponents = var2.get("ncomponents", 0);
  1732.       this.component = (Component[])var2.get("component", new Component[0]);
  1733.       this.layoutMgr = (LayoutManager)var2.get("layoutMgr", (Object)null);
  1734.       this.dispatcher = (LightweightDispatcher)var2.get("dispatcher", (Object)null);
  1735.       if (this.maxSize == null) {
  1736.          this.maxSize = (Dimension)var2.get("maxSize", (Object)null);
  1737.       }
  1738.  
  1739.       this.focusCycleRoot = var2.get("focusCycleRoot", false);
  1740.       this.containerSerializedDataVersion = var2.get("containerSerializedDataVersion", 1);
  1741.       this.focusTraversalPolicyProvider = var2.get("focusTraversalPolicyProvider", false);
  1742.       Component[] var3 = this.component;
  1743.  
  1744.       for(int var4 = 0; var4 < this.ncomponents; ++var4) {
  1745.          var3[var4].parent = this;
  1746.          this.adjustListeningChildren(32768L, var3[var4].numListening(32768L));
  1747.          this.adjustListeningChildren(65536L, var3[var4].numListening(65536L));
  1748.          this.adjustDescendants(var3[var4].countHierarchyMembers());
  1749.       }
  1750.  
  1751.       Object var7;
  1752.       while(null != (var7 = var1.readObject())) {
  1753.          String var5 = ((String)var7).intern();
  1754.          if ("containerL" == var5) {
  1755.             this.addContainerListener((ContainerListener)var1.readObject());
  1756.          } else {
  1757.             var1.readObject();
  1758.          }
  1759.       }
  1760.  
  1761.       try {
  1762.          Object var8 = var1.readObject();
  1763.          if (var8 instanceof FocusTraversalPolicy) {
  1764.             this.focusTraversalPolicy = (FocusTraversalPolicy)var8;
  1765.          }
  1766.       } catch (OptionalDataException var6) {
  1767.          if (!var6.eof) {
  1768.             throw var6;
  1769.          }
  1770.       }
  1771.  
  1772.    }
  1773.  
  1774.    Accessible getAccessibleAt(Point var1) {
  1775.       synchronized(this.getTreeLock()) {
  1776.          if (this instanceof Accessible) {
  1777.             Accessible var12 = (Accessible)this;
  1778.             AccessibleContext var14 = var12.getAccessibleContext();
  1779.             if (var14 != null) {
  1780.                int var17 = var14.getAccessibleChildrenCount();
  1781.  
  1782.                for(int var8 = 0; var8 < var17; ++var8) {
  1783.                   var12 = var14.getAccessibleChild(var8);
  1784.                   if (var12 != null) {
  1785.                      var14 = var12.getAccessibleContext();
  1786.                      if (var14 != null) {
  1787.                         AccessibleComponent var15 = var14.getAccessibleComponent();
  1788.                         if (var15 != null && var15.isShowing()) {
  1789.                            Point var16 = var15.getLocation();
  1790.                            Point var9 = new Point(var1.x - var16.x, var1.y - var16.y);
  1791.                            if (var15.contains(var9)) {
  1792.                               return var12;
  1793.                            }
  1794.                         }
  1795.                      }
  1796.                   }
  1797.                }
  1798.             }
  1799.  
  1800.             return (Accessible)this;
  1801.          } else {
  1802.             Object var3 = this;
  1803.             if (!this.contains(var1.x, var1.y)) {
  1804.                var3 = null;
  1805.             } else {
  1806.                int var4 = this.getComponentCount();
  1807.  
  1808.                for(int var5 = 0; var5 < var4; ++var5) {
  1809.                   Component var6 = this.getComponent(var5);
  1810.                   if (var6 != null && var6.isShowing()) {
  1811.                      Point var7 = var6.getLocation();
  1812.                      if (var6.contains(var1.x - var7.x, var1.y - var7.y)) {
  1813.                         var3 = var6;
  1814.                      }
  1815.                   }
  1816.                }
  1817.             }
  1818.  
  1819.             return var3 instanceof Accessible ? (Accessible)var3 : null;
  1820.          }
  1821.       }
  1822.    }
  1823.  
  1824.    int getAccessibleChildrenCount() {
  1825.       synchronized(this.getTreeLock()) {
  1826.          int var2 = 0;
  1827.          Component[] var3 = this.getComponents();
  1828.  
  1829.          for(int var4 = 0; var4 < var3.length; ++var4) {
  1830.             if (var3[var4] instanceof Accessible) {
  1831.                ++var2;
  1832.             }
  1833.          }
  1834.  
  1835.          return var2;
  1836.       }
  1837.    }
  1838.  
  1839.    Accessible getAccessibleChild(int var1) {
  1840.       synchronized(this.getTreeLock()) {
  1841.          Component[] var3 = this.getComponents();
  1842.          int var4 = 0;
  1843.  
  1844.          for(int var5 = 0; var5 < var3.length; ++var5) {
  1845.             if (var3[var5] instanceof Accessible) {
  1846.                if (var4 == var1) {
  1847.                   return (Accessible)var3[var5];
  1848.                }
  1849.  
  1850.                ++var4;
  1851.             }
  1852.          }
  1853.  
  1854.          return null;
  1855.       }
  1856.    }
  1857.  
  1858.    static {
  1859.       serialPersistentFields = new ObjectStreamField[]{new ObjectStreamField("ncomponents", Integer.TYPE), new ObjectStreamField("component", Component[].class), new ObjectStreamField("layoutMgr", LayoutManager.class), new ObjectStreamField("dispatcher", LightweightDispatcher.class), new ObjectStreamField("maxSize", Dimension.class), new ObjectStreamField("focusCycleRoot", Boolean.TYPE), new ObjectStreamField("containerSerializedDataVersion", Integer.TYPE), new ObjectStreamField("focusTraversalPolicyProvider", Boolean.TYPE)};
  1860.       Toolkit.loadLibraries();
  1861.       if (!GraphicsEnvironment.isHeadless()) {
  1862.          initIDs();
  1863.       }
  1864.  
  1865.    }
  1866. }
  1867.